#pragma once

#include "SQLObject.h"
#include "../../utils/common_ptr.h"

class SQLExpr : virtual public SQLObject
{
public:
	// virtual void doNothing () = 0;

	virtual ~SQLExpr()
	{
	}

	virtual SQLObject_ptr clone() override
	{
		SQLObject_ptr tmp = SQLExpr_ptr(this);
		SQLExpr_ptr clone_this = std::dynamic_pointer_cast<SQLExpr>(tmp);
		return clone_this;
	};

	virtual SQLDataType_ptr computeDataType() { return nullptr; };

	virtual SQLObject_list_ptr getChildren()
	{
		SQLObject_list_ptr tmp = SQLObject_list_ptr();
		return tmp;
	};

	// virtual SQLCommentHint* getHint() {return NULL;};

	// BOOL_ptr operator < (SQLExpr b) {
	// 	return  this->weight < b.weight;
	// }
	// 	/*重载 '>'*/
	// BOOL_ptr operator > (SQLExpr b) {
	// 	return this->weight > b.weight;
	// }
};

